﻿Imports BUS
Imports DTO

Public Class MH_DanhSachLop

    Dim bangLop As New DataTable 'Biến toàn cục lưu bảng Lop

    Private Sub MH_DanhSachLop_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Xuất bảng Lop vào DataGridView
        Dim lopBUS As New LopBUS
        bangLop = lopBUS.LayBang()
        dgvDanhSach.DataSource = bangLop
        'Load danh sach khoi vao cboKhoi
        Dim khBUS As New KhoiBUS
        Dim dsKhoi As New List(Of KhoiDTO)
        dsKhoi = khBUS.LayDanhSach()
        cboKhoi.DataSource = dsKhoi
        cboKhoi.DisplayMember = ("TenKhoi")
        cboKhoi.ValueMember = ("MaKhoi")
        'Label tổng số lớp
        Label4.Text = bangLop.Rows.Count
    End Sub

    
    Private Sub dgvDanhSach_RowEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvDanhSach.RowEnter
        'Lấy dòng hiện hành rồi xuất textbox
        Dim index As Integer = e.RowIndex
        If index >= 0 And index < dgvDanhSach.Rows.Count Then
            txtTenLop.Text = bangLop.Rows(index)("TenLop")
            txtSiSo.Text = (bangLop.Rows(index)("SiSo")).ToString()
            cboKhoi.SelectedValue = bangLop.Rows(index)("MaKhoi")
        End If
    End Sub

    Public Function KiemTraDuLieuNhap() As Boolean 'Hàm kiểm tra dữ liệu nhập vào có hợp lệ hay ko
        'Kiểm tra tên lớp
        If txtTenLop.Text.Trim() = "" Then
            MessageBox.Show("Chưa nhập tên lớp.")
            txtTenLop.Focus()
            Return False
        End If
        'Kiểm tra sỉ số
        If txtSiSo.Text.Trim() = "" Then
            MessageBox.Show("Chưa nhập sỉ số.")
            txtSiSo.Focus()
            Return False
        End If
        Try
            Dim so As Integer = Integer.Parse(txtSiSo.Text.Trim())
        Catch ex As Exception
            Return False
        End Try

        Return True
    End Function

    Private Sub btnThem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnThem.Click
        If (KiemTraDuLieuNhap() = True) Then
            'Tiến hành thêm và thông báo kết quả
            Dim lopBUS As New LopBUS
            Dim lopDTO As New LopDTO
            lopDTO.TenLop = txtTenLop.Text.Trim()
            'lopDTO.SiSo = Integer.Parse(txtSiSo.Text.Trim())
            lopDTO.SiSo = 0
            lopDTO.MaKhoi = cboKhoi.SelectedValue
            Dim r As Integer = lopBUS.ThemLop(lopDTO)
            If r = 1 Then
                MessageBox.Show("Thêm thành công.")
                'Xuất lại bảng môn học sau khi thêm vào DataGridView
                bangLop = lopBUS.LayBang()
                dgvDanhSach.DataSource = bangLop
                'Label tổng số lớp
                Label4.Text = bangLop.Rows.Count
            Else
                MessageBox.Show("Thêm thất bại.")
            End If
        End If
    End Sub

    Private Sub btnXoa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXoa.Click
        'Nếu dòng hiện hành tồn tại
        If dgvDanhSach.CurrentRow IsNot Nothing Then
            'Lấy mã lớp của dòng hiện hành
            Dim i As Integer = dgvDanhSach.CurrentRow.Index
            bangLop = dgvDanhSach.DataSource

            'Tiến hành thêm và thông báo kết quả
            Dim lopBUS As New LopBUS()
            Dim lopDTO As New LopDTO()
            lopDTO.MaLop = Integer.Parse(bangLop.Rows(i)("MaLop"))
            Dim r As Integer = lopBUS.XoaLop(lopDTO)
            If r = 1 Then
                MessageBox.Show("Xóa thành công.")
                'Xuất lại bảng môn học sau khi xóa trên DataGridView
                bangLop = lopBUS.LayBang()
                dgvDanhSach.DataSource = bangLop
                'Label tổng số lớp
                Label4.Text = bangLop.Rows.Count
            Else
                MessageBox.Show("Xóa thất bại.")
            End If
        End If
    End Sub

    Private Sub btnCapNhat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCapNhat.Click
        If (KiemTraDuLieuNhap() = True) Then
            'Nếu dòng hiện hành tồn tại
            If dgvDanhSach.CurrentRow IsNot Nothing Then
                'Lấy mã lớp của dòng hiện hành
                Dim i As Integer = dgvDanhSach.CurrentRow.Index
                bangLop = dgvDanhSach.DataSource
                Dim lopDTO As New LopDTO()
                lopDTO.MaLop = Integer.Parse(bangLop.Rows(i)("MaLop"))
                lopDTO.TenLop = txtTenLop.Text.Trim()
                lopDTO.SiSo = Integer.Parse(txtSiSo.Text.Trim())
                lopDTO.MaKhoi = cboKhoi.SelectedValue
                'Tiến hành cập nhật và thông báo kết quả
                Dim lopBUS As New LopBUS()
                Dim r As Integer = lopBUS.CapNhatLop(lopDTO)
                If r = 1 Then
                    MessageBox.Show("Cập nhật thành công.")
                    'Xuất lại bảng môn học sau khi cập nhật trên DataGridView
                    bangLop = lopBUS.LayBang()
                    dgvDanhSach.DataSource = bangLop
                Else
                    MessageBox.Show("Cập nhật thất bại.")
                End If
            End If
        End If
    End Sub
End Class